#include "reg52.h" 
#include "delay.h"
#include "lcd.h"

sbit rs=P2^5;      //1602的数据/指令选择控制线
sbit rw=P2^6;			//1602的读写控制线
sbit en=P2^7;			//1602的使能控制线


#define dataPort P1 		//P2口接1602的D0~D7
unsigned char code table[]="123456"; //要显示的内容放入数组table

void lcd_wcom(unsigned char com) //1602写命令函数 
{
	rs=0;				//选择指令寄存器
	rw=0;				//选择写
	dataPort=com;//把命令字送入P2
	delay_ms(5);//延时一小会儿，让1602准备接收数据
	en=1;			//使能线电平变化，命令送入1602的8位数据口
	en=0;
}
void lcd_wdat(unsigned char dat) //1602写数据函数
{
	rs=1;//选择数据寄存器
	rw=0;//选择写
	dataPort=dat;//把要显示的数据送入P2
	delay_ms(5);//延时一小会儿，让1602准备接收数据
	en=1;//使能线电平变化，数据送入1602的8位数据口
	en=0;
}
void lcd_init() //1602初始化函数 
{
	lcd_wcom(0x34);//8位数据，双列，5*7字形 
	//lcd_wcom(0x0c); //开显示屏，关光标，当前字符不闪烁
	lcd_wcom(0x0f);//开启显示屏，开光标，当前字符闪烁
	lcd_wcom(0x06);//显示地址递增，即写一个数据后，显示位置右移一位
	lcd_wcom(0x01);//清屏
	
}
void lcd_clr()   //液晶屏清屏
{
		lcd_wcom(0x01);//清屏
}

//开显示器，开光标与字符闪烁
//C=Cursor  B=Blink
void lcd_onCB() 
	
{
	lcd_wcom(0x0f);
	lcd_wcom(0xc0);//清屏后将从0x80开始写，由于密码写在第二行，故进行重定位
}

void lcd_on()   //开显示器，关光标与闪烁
{
	lcd_wcom(0x0c);
	lcd_wcom(0xc0); //清屏后将从0x80开始写，由于密码写在第二行，故进行重定位
}

void lcd_off()  //关显示器，但DDRAM中内容不丢失，重开后将恢复内容
{
	lcd_wcom(0x08);
}
